#pragma once

#include "Frame.hxx"

class ProcessStream;
class DataCapture;
class StreamSynchronizer;
class TrackerModel;

class PipeLine
{
public:
	PipeLine(void);
	~PipeLine(void);

	void initialize();

	void start();
	void stop();

	void addFrame( char* raw, int channelIndex );

	inline DataCapture* getDataCapture() { return _dataCapture; }

	ProcessStream* getProcessStream( int index ) { return _streams[ index ]; }

	inline StreamSynchronizer* getStreamSynchronizer()  { return _synchronizer; }

	inline void setTrackerModel( TrackerModel* model ) { _model = model; }
	inline TrackerModel* getTrackerModel() { return _model; }

private:
	ProcessStream* _streams[ CHANNEL_COUNT ];

	DataCapture* _dataCapture;

	StreamSynchronizer* _synchronizer;

	TrackerModel* _model;

};

